Ad hoc networks are self-organizing networks in which nodes cooperatively maintain network connectivity. Typically, nodes in an ad hoc network are equipped with radio transceivers, allowing them to communicate wirelessly with one another without requiring centralized network administration or fixed network infrastructure such as base stations or access points. Since each wireless transceiver has a limited effective range, two distant nodes must communicate across multi-hop paths. Intermediary nodes in the path act as routers by forwarding packets originating from the source node initiating the communication to the intended destination node.
In computer networks, routing generally refers to the problem of selecting a path through the network along which a message will travel from the source node to the destination node. Because the topology of an ad hoc network is dynamic by its nature, and because such networks are formed and maintained in a decentralized manner, routing in multi-hop ad hoc networks presents particular challenges. Wireless nodes in an ad hoc network may be mobile. Even if nodes are not moving, network links and the quality of those links may change significantly over time. These characteristics make conventional network routing protocols unsuitable.
One routing protocol that has been designed for multi-hop ad hoc networks is Dynamic Source Routing (DSR). DSR is described in an Internet Draft work in progress submitted to the Internet Engineering Task Force (IETF) Mobile Ad Hoc Networks (MANET) Working Group, “The Dynamic Source Routing Protocol for Mobile Ad Hoc Networks (DSR)” (Feb. 21, 2002), incorporated herein by reference. DSR is a reactive (on-demand) protocol that uses “source routing.” In source routing, when a source node sends a packet to a destination node, the source node includes in the packet header the complete sequence of nodes that comprises the route along which the packet is to be forwarded in order to reach the destination node. Each intermediary node in the listed route forwards the packet to the next hop indicated in the header and attempts to confirm that the packet was actually received by the next node in the route.
Source routing may be contrasted with, for example, conventional routing across IP networks. In IP routing, no full source route is set forth in each packet. The packet header contains the destination address. The source node sends a packet to a nearby router. The router examines the header, consults a routing or address table to determine the next hop, updates the header, and then sends the packet towards its destination. The packet will generally pass through several routers in this manner before reaching the intended destination.
Two important elements of routing protocols like DSR are Route Discovery and Route Maintenance. The need for Route Discovery arises when a source node intends to communicate with a destination node but does not know the route to that node. In one approach, proactive route discovery, each node periodically determines its neighbors, adjusting to changes occurring in the network. DSR instead uses reactive route discovery: a node attempts to discover a route to some destination only when it has a packet to send to that destination. The source node broadcasts a route discovery request packet through its local neighborhood, and the route request propagates through the network until it reaches the target destination node. Each node receiving the request appends its own node address to a list in the request and rebroadcasts the request. When the request reaches the target node, the target sends a reply to the initiator, including the accumulated list of addresses comprising the route from the initiator to the target. When the initiator receives this reply, it stores the new route in a route cache indexed by destinations. In DSR a forwarding node can also “snoop” or overhear the content of a message and use the overheard information to populate its route cache.
Because changes in intermediary links along a route may occur, and a particular link may become broken, DSR employs a route maintenance mechanism, which is also reactive. As a packet is forwarded along a route, a forwarding node attempts to confirm whether the next node in the route actually received the packet. If it is unable to make this confirmation, a route error message is sent back to the original source node, identifying the link as broken. The source node updates its route cache to reflect this information. In sending subsequent packets to the destination, the source node may use another cached route to the destination, or it may attempt a new route discovery if necessary.
When there is more than one known route from a source node to a destination node, a routing protocol can employ one or more metrics to determine a preferred path. An algorithm such as Dijkstra's shortest path algorithm can be used in making this determination. DSR and other routing protocols for wireless ad hoc networks have mainly focused on finding paths with the least number of intermediate hops. Choosing paths that minimize hop count can lead to poor performance, however, in part because such paths tend to include wireless links between distant nodes. These long wireless links can be slow or lossy, leading to poor throughput for flows that traverse them. On the other hand, a path with a greater number of hops may feature links that are more reliable and fast. An alternative to shortest-path routing that is generally known in the networking arts is routing according to link quality.